内存分析简介
任务1 简介
在本房间中,我们将探讨内存分析如何支持网络安全调查,特别是从蓝队视角出发。 我们将学习RAM中的数据如何揭示活跃威胁、用户活动以及关机后丢失的痕迹。
我们将从易失性内存的基础知识及其与磁盘取证的对比开始。 接着,我们将了解内存转储的创建与使用方法、内存中可能出现的攻击迹象,以及此类分析在何时最为有效。
房间后续的互动环节将帮助我们可视化内存结构和取证证据。 最终,我们将理解在实际调查中如何及何时应用内存分析。
学习目标
- 理解内存分析在网络安全调查中的角色和重要性。
- 识别易失性内存的结构和行为,包括内存层次结构和RAM布局。
- 解释什么是内存转储、如何创建内存转储以及获取内存转储的挑战。
- 基于真实世界技术识别内存中的常见攻击指纹。
先决条件
点击继续。
No answer needed
任务2 易失性内存
易失性内存
在本房间中,我们首先理解易失性内存及其为何在调查或数字取证中扮演关键角色。 易失性内存指的是计算机运行时存储系统和用户级数据的存储数据。 当系统断电或重启时,这些数据会丢失。 此类内存的常见位置是RAM(随机存取内存) RAM临时存储从打开的文件和运行进程到加密数据的一切内容。 由于这些数据仅在系统活动时存在,调查人员通常优先在调查早期尽可能捕获RAM。
内存层次结构
计算机使用内存层次结构存储和访问信息,每一级在速度和容量之间提供权衡。 从最快到最慢,顺序为:

CPU寄存器和缓存速度极快但容量有限。 RAM是操作系统和活动程序的主要工作内存。 磁盘存储虽然慢得多,但用于长期数据保留。
另一方面,虚拟内存的概念是一个虚拟内存空间。 当程序运行时,操作系统为其分配虚拟内存地址,这些地址映射到物理RAM或(如果需要)基于磁盘的交换空间。 交换是磁盘上的保留区域,操作系统在物理内存暂时满时用于存储来自RAM的数据。 这使得系统能够处理比仅靠RAM支持更多的活动进程。 这使得进程能够像拥有专用内存一样运行,而系统管理实际数据所在的位置。 操作系统根据系统负载和优先级在RAM和磁盘之间持续移动数据。
上述内容影响内存分析,因为一些取证痕迹可能驻留在RAM中,而其他痕迹可能临时存储在交换文件中。
RAM结构
RAM通常是调查将关注的内存。 它分为两个主要区域:内核空间和用户空间。
- 内核空间为操作系统和低级服务保留。 它管理设备驱动程序和内存访问等资源。
- 用户空间包含用户或应用程序启动的进程。 每个进程获得自己独立的空间,受到其他进程的保护。
在用户进程内,内存通常结构化为几个区域:
- 栈:存储临时数据,如函数参数和返回地址。 它随着函数的调用和返回而增长和收缩。
- 堆:用于运行时动态内存分配,如程序创建的对象和缓冲区。
- 可执行(.text):存储CPU运行的实际代码或指令。
- 数据段:存储全局变量和可执行文件所需的其他数据的空间。
理解此结构对于识别取证痕迹可能位于何处很重要。 例如,加密密钥通常位于堆上,而shell命令可能在栈上。

取证分析师的RAM
RAM分析提供了系统在特定时刻正在做什么的快照。 这包括:
- 运行进程和加载的可执行文件
- 开放网络连接和端口
- 登录用户和最近命令
- 解密内容,包括加密密钥
- 注入代码或无文件恶意软件
由于所有这些信息在系统关闭后消失,内存分析提供了观察系统运行的独特机会。 它通常揭示磁盘取证中不可用的证据,特别是对于不向磁盘写入文件的攻击。
这使得内存在事件响应期间成为优先目标,尤其是在处理实时系统、恶意软件调查或可疑入侵时。
内存取证通常在调查早期使用,以捕获关机时消失的数据。 它帮助响应人员在丢失活动进程、网络连接和其他实时痕迹之前收集它们。
它在处理内存中威胁、无文件恶意软件或凭据盗窃时非常有用。 内存分析提供系统活动的快照,可在调查期间提供帮助。
哪种类型的内存因其数据在关机后消失而被优先处理?
RAM
内存层次结构中最慢的组件是什么?
disk
哪个内存区域通常包含动态分配的数据,如加密密钥?
heap
哪个基于磁盘的区域在内存满时临时存储RAM数据?
swap
任务3 内存转储
在本任务中,我们探讨什么是内存转储以及它如何融入取证工作流。 内存转储是系统RAM在特定时间点的快照。 它捕获易失性内存中存储的所有内容,包括运行进程、活动会话、网络活动,有时甚至包括凭据等敏感数据。
内存转储被广泛用于取证分析、恶意软件调查和威胁狩猎。 安全团队分析这些快照以了解系统上运行的内容,并发现可疑或未经授权的活动。 像Mimikatz这样的工具常被红队成员和攻击者用来直接从内存中提取凭据,使内存转储成为重要的防御焦点。
内存转储的创建方式
创建内存转储取决于所使用的操作系统。 目标是在获取过程中捕获RAM内容而不显著改变它。
在Windows上,可以使用内置崩溃转储、Sysinternals的RAMMap或第三方实用程序(如WinPmem和FTK Imager)来生成完整或选择性内存捕获。 一些方法包括位于%SystemRoot%\MEMORY.DMP的内核模式转储和存储为%SystemDrive%\hiberfil.sys的休眠文件。 我们可以在分析易失性内存房间中找到更多相关信息。
在Linux和macOS上,分析人员可以使用LiME(Linux内存提取器)或dd访问/dev/mem或/proc/kcore,具体取决于内核保护。 这些方法将在房间后面更详细地介绍。
内存转储的类型
内存转储在范围和作用上各不相同:
- 完整内存转储:捕获所有RAM,包括用户空间和内核空间。 对于完整的取证调查和恶意软件分析很有用。
- 进程转储:捕获单个运行进程的内存。 有助于逆向工程或隔离特定应用程序内的恶意行为。
- 页面文件和交换分析:当RAM满时,系统将一些内存内容卸载到磁盘。 在Windows上,这存储在pagefile.sys中,在Linux上,存储在交换分区或交换文件中。 这些可能包含曾经在RAM中的数据片段,提供额外的上下文。
在某些情况下,系统的休眠文件(hiberfil.sys)也可以被解析以提取机器进入休眠模式时保存的RAM内容。 更多信息可以在这篇文章中找到。
内存获取的挑战
获取干净可靠的内存转储面临几个挑战。 攻击者可能部署反取证技术来篡改内存捕获工具或隐藏其在RAM中的存在。 常见示例包括:
| 示例 | 解释 |
|---|---|
| 未链接或隐藏的模块 | 恶意软件可能从进程列表中取消链接自身,使其对依赖典型操作系统查询的工具不可见。 |
| DKOM(直接内核对象操作) | 改变内核结构以隐藏进程、线程或驱动程序,使其不被标准系统工具发现。 |
| 代码注入 | 恶意代码被注入到合法进程(例如explorer.exe、svchost.exe)中以混入并逃避检测。 |
| 内存修补 | 恶意软件在运行时修改内存内容或系统API以干扰取证工具或产生虚假数据。 |
| 钩取API或系统调用 | 拦截并改变关键函数(例如ReadProcessMemory、ZwQuerySystemInformation)的输出以隐藏恶意行为。 |
| 加密或打包的有效载荷 | 有效载荷在内存中保持加密或压缩状态,仅在执行时解密,使得静态分析变得困难。 |
| 基于触发的有效载荷 | 一些内存驻留恶意软件仅在满足特定条件时才解包或运行,限制了分析人员在常规获取过程中可以捕获的内容。 |
这些方法要求分析人员超越默认工具,使用内存雕刻、内核级检查和基于行为的技术来发现隐藏活动。
加密和混淆技术也被用来使内存内容更难解释。 加密的有效载荷或压缩的代码块可能存储在内存中,仅在运行时解密,这增加了分析的复杂性。
攻击者通常使用什么工具从内存中提取凭据?
Mimikatz
哪种类型的内存转储捕获所有RAM,包括用户空间和内核空间?
full
在Linux上可以使用什么工具进行取证目的的内存提取?
lime
Windows系统上哪个文件在休眠期间存储内存?
hiberfil.sys
哪种反取证技术通过改变内核结构来隐藏进程?
DKOM
任务4 内存分析攻击指纹
基于内存的威胁指标
内存分析对于检测可能在磁盘上不留痕迹的威胁特别有效。 虽然日志和文件系统提供长期证据,但内存揭示了当前正在发生的事情,使其对于识别活跃或最近执行的攻击至关重要。
分析人员在内存中寻找的最常见工件包括:
- 运行的可疑或恶意进程,在磁盘上没有对应的文件。
- DLL注入,其中恶意代码被注入到合法进程的内存空间。
- 进程镂空,一种将受信任进程的内存替换为恶意代码的技术。
- API钩取,用于拦截或改变正常函数调用以隐藏活动或操纵系统行为。
- Rootkit,特别是那些在内核空间运行的,它们操纵内存结构以隐藏文件、进程或网络连接。
这些技术通常留下特定的内存签名——例如异常的内存区域、不匹配的PE头或在可写内存区域中的代码执行——这些可以通过取证工具检测到。
接下来,我们将了解在执行内存分析时可以检测到的最常见攻击。
凭据访问(MITRE ATT&CK:T1003)
T1071 – 应用层协议:命令与控制
现代恶意软件通常在不丢弃文件的情况下与外部服务器通信。 这种无文件恶意软件使用内存驻留有效载荷通过标准协议(如HTTP、HTTPS或DNS)获取命令或泄露数据。 在内存中,分析人员可以找到解密的C2配置、IP地址或信标,这些在其他地方都没有记录,以尝试找到工件。
内存中脚本执行(T1086)
T1086 – PowerShell
直接从内存执行的脚本更难追踪,因为它们不接触磁盘。 攻击者使用PowerShell或其他解释器(例如Python、WMI)在RAM中执行代码。 内存分析可能揭示PowerShell进程内存中的完整脚本内容、编码命令或运行时工件。
内存中的持久化技术
这些持久化机制可以通过在实时内存分析期间发现相关工件来识别:
T1053.005 – 计划任务/作业:计划任务
任务计划程序创建在间隔时间或启动时执行的作业。 在内存分析期间,我们可以查找像schtasks.exe这样的进程以及包含任务名称或恶意有效载荷路径的内存字符串。
T1543.003 – 创建或修改系统进程:Windows 服务
恶意服务可能在 services.exe 下在后台运行。 我们可能在内存中发现与此技术相关的异常服务名称、二进制文件或配置。
T1547.001 – 注册表运行项 / 启动文件夹
恶意软件向 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 添加条目以在启动时执行。 这些值通常可以从内存中恢复,或在缓存在 RAM 中的注册表配置单元中找到。
通过内存痕迹进行横向移动
内存取证还可以暴露跨系统横向移动的尝试。 常见技术包括:
T1021.002 – 远程服务:SMB/Windows 管理共享 (PsExec)
PsExec 支持在远程系统上执行命令。 分析人员可能在内存中发现与 PsExec 相关的服务或命令行参数,表明存在横向移动。
T1021.006 – 远程服务:Windows 远程管理 (WinRM)
WinRM 提供 PowerShell 远程处理。 查找 wsmprovhost.exe 和内存中对远程会话初始化的引用。
T1059.001 – 命令和脚本解释器:PowerShell (远程)
PowerShell 通常用于远程命令执行。 分析人员可以检测 PowerShell 进程内存中的 base64 编码或混淆命令。
T1047 – Windows Management Instrumentation (WMI)
诸如 wmic process call create 之类的 WMI 命令可能用于生成远程进程。 相关的命令字符串或类引用可能缓存在内存中。
哪种技术涉及用恶意代码替换受信任进程的内存?
Process hollowing
哪个 Windows 服务提供 PowerShell 远程处理?
WinRM
哪个 MITRE 技术 ID 与内存中的 PowerShell 执行相关?
T1086
哪个命令行工具支持远程执行并与横向移动 (T1021.002) 相关联?
PsExec
哪个 MITRE 技术涉及设置在重启后持续存在的任务(例如,schtasks.exe)?
T1053.005
任务 5 实践
访问以下网站,将术语放入正确的定义中,并获取标志。
访问 交互式练习
标志的值是什么?
THM{m3mory_analyst_g00d_job}
任务 6 结论
在本房间中,我们学习了内存分析在数字取证中的重要性以及它如何支持早期调查。 我们探讨了什么是易失性内存,RAM 如何存储活动数据,以及为什么在事件响应中优先处理它。 我们还研究了内存的结构,以及命令、加密密钥和进程等取证痕迹如何分布在不同的内存区域中。
我们还介绍了内存转储及其创建方式、可用类型以及捕获它们所涉及的挑战。 最后,我们检查了可以通过内存分析识别的常见攻击技术,例如凭据转储、DLL 注入、脚本执行以及持久化或横向移动的迹象。
总之,这些主题构建了对 RAM 在识别威胁中如何发挥关键作用的深刻理解。
点击以完成房间。
No answer needed